package num28;

/**
 * @author : DuJiabao
 * @Date : 2021/1/22 11:54
 * @Project : sword-finger-offer
 * @File : null.java
 * @Desc : 请实现一个函数，用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样，那么它是对称的。
 * https://leetcode-cn.com/problems/dui-cheng-de-er-cha-shu-lcof/
 */
public class Solution {
    public boolean isSymmetric(TreeNode root) {
        if (root == null) return true;
        return compare(root.left, root.right);
    }

    /**
     * 递归比较两边的树
     * @param root1
     * @param root2
     * @return
     */
    private boolean compare(TreeNode root1, TreeNode root2) {
        if (root1 == null && root2 == null) return true;
        if (root1 == null || root2 == null) return false;
        if (root1.val != root2.val) return false;
        return compare(root1.left, root2.right) && compare(root1.right, root2.left);
    }

}
